package com.glela.platform.mapper;

import org.apache.ibatis.annotations.Param;

import com.glela.platform.model.User;
import com.glela.platform.model.UserInfo;
import com.glela.platform.model.request.RequsetPersonalInfo;
import com.glela.platform.model.response.ResponseMineInfoModel;
import com.glela.platform.model.response.ResponsePersonalInfoset;
import com.glela.platform.model.UserLocatedInfo;

public interface UserInfoMapper {
	//int deleteByPrimaryKey(Long id);

	int insert(UserInfo record);

	int insertSelective(UserInfo record);

	UserInfo selectByPrimaryKey(Long id);

	UserInfo selectByUserId(Long userId);

	int updateByPrimaryKeySelective(UserInfo record);

	int updateByPrimaryKey(UserInfo record);

	/**
	 * 根据用户ID查询用户信息设置
	 * 
	 * @param userId
	 * @return
	 */
	public ResponsePersonalInfoset selectUserPicture(Long userId);

	/**
	 * 根据用户ID查询用户头像，点赞视频
	 * 
	 * @param userId
	 * @return
	 */
	public String selectMineInfo(Long userId);

	/**
	 * 根据用户ID修改用户头像
	 * 
	 * @param picture
	 * @param userId
	 * @return
	 */
	public int updatePictureById(RequsetPersonalInfo requsetPersonalInfo);

	public int updateByUserIdSelective(UserInfo userInfo);

	public int updateCuserByUserId(User user);

	/**
	 * 更新用户常驻地
	 * 
	 * @param userId
	 * @param areaCode
	 * @return
	 */
	int updateUserLocated(@Param("userId") long userId, @Param("locatedCode") String locatedCode);

	/**
	 * 获取用户基本信息
	 * 
	 * @param userId
	 * @return
	 */
	ResponseMineInfoModel selectPersonIMainInfo(long userId);

	/**
	 * 插入用户常驻地记录
	 * 
	 * @param userLocatedInfo
	 * @return
	 */
	int insertUserLocatedInfo(UserLocatedInfo userLocatedInfo);

	/**
	 * 更新用户常驻地记录
	 * 
	 * @param userLocatedInfo
	 * @return
	 */
	int updatetUserLocatedInfo(UserLocatedInfo userLocatedInfo);

	/**
	 * 获取用户当前常驻地记录
	 * 
	 * @param userId
	 * @return
	 */
	UserLocatedInfo selectUserLocatedInfo(long userId);

	/**
	 * 清空用户当前常驻地信息（需要进行归档）
	 * 
	 * @param userId
	 * @return
	 */
	int deleteUserLocatedInfo(long userId);

	/**
	 * 归档用户常驻地记录
	 * 
	 * @param userLocatedInfo
	 * @return
	 */
	int insertUserLocatedRecord(UserLocatedInfo userLocatedInfo);

	/**
	 * 根据用户id查询
	 * 
	 * @param userId
	 * @return
	 */
	public UserInfo selectUserInfoEntityByUserId(long userId);

	/**
	 * 根据用户id修改用户头像
	 * 
	 * @param userId
	 * @return
	 */
	public int updateUserPictureByUserId(long userId);

	/**
	 * 添加
	 * 
	 * @param userId
	 *            persionId sign
	 * @return
	 */
	public int insertUserInfo(@Param("userId") long userId, @Param("persionId") String persionId,
			@Param("sign") int sign,@Param("sex")int sex);

	/**
	 * 查询最大的身份id基数
	 * 
	 * @param
	 * @return
	 */
	public int selectUserinfoMaxSign();

	/**
	 * 根据身份id查询用户id
	 * 
	 * @param
	 * @return
	 */
	public UserInfo selectUserInfoByPersion(String persionId);
	
	/**
	 * 添加
	 * 
	 * @param userId
	 *            persionId sign
	 * @return
	 */
	public int insertUserInfoUndefined(@Param("userId") long userId, @Param("persionId") String persionId,
			@Param("sign") int sign,@Param("sex")int sex);
	/**
	 * 删除
	 * 
	 * @param userId
	 *            persionId sign
	 * @return
	 */
//	public int deleteUserInfoByUserId(long userId);
	
	public UserInfo selectUserInfoByUserId(long userId);
	/**
	 * 根据身份id基数查询用户信息
	 * @param persionId
	 * @return
	 */
	public UserInfo selectUserInfoByPersionId(String persionId);
	
	public long selectUserIdByPersionId(String persionId);
	
	public int insertUserInfoNew(@Param("userId") long userId, @Param("persionId") String persionId,
			@Param("sign") int sign,@Param("sex") int sex,@Param("regSource") int regSource);
}